package com.itheima.extends5override; // 包声明：定义该类所在的文件夹路径，帮助管理类的组织结构
  
public class Test { // 公共类Test：程序的主类，public表示可以被其他包访问
    public static void main(String[] args) { // 主方法：程序的入口点，JVM会从这里开始执行代码
        // 目标：认识方法重写，再搞清楚场景。
        Cat cat = new Cat(); // 创建Cat类的对象：变量cat引用一个新的Cat实例
        cat.cry(); // 调用cat对象的cry方法：因为Cat类重写了Animal类的cry方法，所以会执行Cat类中的实现
    } // 主方法结束
}

class Cat extends Animal{ // Cat类继承自Animal类：Cat是子类，Animal是父类
    // 方法重写: 方法名称，形参列表必须一样，这个方法就是方法重写。
    // 重写的规范：声明不变，重新实现。
    @Override // 方法重写的校验注解：这是一个特殊标记，告诉编译器这个方法是重写父类的方法，如果名称或参数不匹配会报错
    public void cry(){ // 重写父类Animal的cry方法：方法名和参数列表必须与父类完全一致
        System.out.println("🐱喵喵喵的叫~"); // Cat类中cry方法的具体实现：输出猫的叫声
    } // cry方法结束
}

class Animal{ // Animal类：Cat类的父类，定义了动物的共同特征
    public void cry(){ // Animal类中的cry方法：定义了动物会叫的基本行为
        System.out.println("动物会叫~"); // Animal类中cry方法的具体实现：输出通用的动物叫声描述
    } // cry方法结束
}
